#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    ui->setupUi(this);
    glWidget = new GLWidget(this);
    setCentralWidget(glWidget);

    // 创建三个带透明度的平面
    glWidget->createPlane(-20.0f, 20.0f, QColor(100, 100, 255, 150));  // 蓝色
    glWidget->createPlane(0.0f, 20.0f, QColor(100, 255, 100, 150));   // 绿色
    glWidget->createPlane(20.0f, 20.0f, QColor(255, 100, 100, 150));  // 红色

    // 在各个平面上创建节点 - 每层20个节点
    // 蓝色平面 (平面0) - 手机设备
    for (int i = 0; i < 20; ++i) {
        glWidget->addNodeToPlane(0, (rand() % 16 - 8), (rand() % 16 - 8), GLWidget::DEVICE_PHONE);
    }
    
    // 绿色平面 (平面1) - 路由器设备
    for (int i = 0; i < 20; ++i) {
        glWidget->addNodeToPlane(1, (rand() % 16 - 8), (rand() % 16 - 8), GLWidget::DEVICE_ROUTER);
    }
    
    // 红色平面 (平面2) - 计算机设备
    for (int i = 0; i < 20; ++i) {
        glWidget->addNodeToPlane(2, (rand() % 16 - 8), (rand() % 16 - 8), GLWidget::DEVICE_COMPUTER);
    }
    
    // 生成平面内连接
    glWidget->generateRandomConnections(0, 1, 3); // 蓝色平面
    glWidget->generateRandomConnections(1, 2, 4); // 绿色平面
    glWidget->generateRandomConnections(2, 1, 2); // 红色平面
    
    // 所有平面都使用随机布局算法
    glWidget->arrangeNodesRandomly(0, 0.5f); // 蓝色平面：随机布局
    glWidget->arrangeNodesRandomly(1, 0.5f); // 绿色平面：随机布局
    glWidget->arrangeNodesRandomly(2, 0.5f); // 红色平面：随机布局
    
    // 生成跨层连接
    glWidget->generateInterPlaneConnections(0, 1, 4); // 手机到路由器
    glWidget->generateInterPlaneConnections(1, 2, 3); // 路由器到计算机
    glWidget->generateInterPlaneConnections(0, 2, 2); // 手机直连计算机
}

MainWindow::~MainWindow()
{
    delete ui;
}
